perm filename WALK3.SAI[HAK,HPM]1 blob
sn#122345 filedate 1974-09-28 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGIN "WALK"
C00005 ENDMK
C⊗;
BEGIN "WALK"
REQUIRE "DDSUB.SAI[GRA,HPM]" SOURCE_FILE;
REAL X,Y,X1,Y1,D,VX,VY,LIMIT,VV,V,DD,K,T;
REAL ARRAY SX,SY[1:30];
INTEGER I,CHAN;
OUTSTR("CHANNEL NO:"); IF (CHAN←CVO(INCHWL))=0 THEN CHAN←-1;
LIMIT←3000;
FOR I←1 STEP 1 UNTIL 30 DO
BEGIN
SX[I]←LIMIT*COS(I*2*3.14159265/30)/6;
SY[I]←LIMIT*SIN(I*2*3.14159265/30)/6;
END;
DDINIT;
SCREEN(-LIMIT,-LIMIT,LIMIT,LIMIT);
DRKEN; RECTAN(-2*LIMIT,-2*LIMIT,2*LIMIT,2*LIMIT);
LITEN; POLYGO(30,SX,SY);
LINE(-LIMIT,-LIMIT,LIMIT,-LIMIT);
LINE(LIMIT,-LIMIT,LIMIT,LIMIT);
LINE(LIMIT,LIMIT,-LIMIT,LIMIT);
LINE(-LIMIT,LIMIT,-LIMIT,-LIMIT);
INVEN;
DPYUP(CHAN);
RAN(CALL(0,"RUNTIM"));
VX←-30*RAN(0); VY←30*RAN(0); X←LIMIT*(1-2*RAN(0)); Y←LIMIT*(1-2*RAN(0));
K←1000000;
WHILE TRUE DO
BEGIN
IF RAN(0)<.01 THEN
BEGIN
RECTAN(X-LIMIT/64,Y-LIMIT/64,X+LIMIT/64,Y+LIMIT/64);
D←2*3.14159265*RAN(0); VX←VX+10*SIN(D); VY←VY+10*COS(D);
END;
FOR I←1 STEP 1 UNTIL 10 DO
BEGIN
DD←X↑2+Y↑2;
T←D←SQRT(DD);
IF T>LIMIT/6 THEN
BEGIN
VX←VX-K*X/D↑3; VY←VY-K*Y/D↑3;
X1←X+VX; Y1←Y+VY;
DD←X1↑2+Y1↑2; D←SQRT(DD);
IF D≤LIMIT/6 THEN
BEGIN
T←VX*X1+VY*Y1;
VX←VX-1.8*X1*T/DD;
VY←VY-1.8*Y1*T/DD;
END;
END;
IF ABS(X1)>LIMIT THEN VX←-.9*VX;
IF ABS(Y1)>LIMIT THEN VY←-.9*VY;
X1←X+VX; Y1←Y+VY;
LINE(X,Y,X1,Y1); X←X1; Y←Y1;
END;
DPYUP(CHAN);
END;
END;